/*     */ package com.cn.bup;
/*     */ 
/*     */ import java.io.File;
/*     */ import java.util.Date;
/*     */ import java.util.HashMap;
/*     */ import java.util.HashSet;
/*     */ import java.util.Iterator;
/*     */ import java.util.Map;
/*     */ import java.util.Set;
/*     */ 
/*     */ public class CesCilCtl
/*     */ {
/*  20 */   private static CesCilCtl instance = null;
/*     */ 
/*  22 */   private static boolean debug = false;
/*     */ 
/*  24 */   private static long expireTime = 1L;
/*     */ 
/*  26 */   private static long accessTime = 1L;
/*     */ 
/*  28 */   private HashMap<String, Integer> hm_ModuleToLicCount = new HashMap();
/*     */ 
/*  30 */   private static Map<String, String> specialMap = null;
/*     */ 
/*     */   static { specialMap = new HashMap();
/*     */ 
/*  34 */     specialMap.put("H", "10");
/*     */   }
/*     */ 
/*     */   private CesCilCtl()
/*     */   {
/*  43 */     if (!(debug))
/*  44 */       init();
/*     */   }
/*     */ 
/*     */   public static CesCilCtl getInstance() {
/*  48 */     if (instance == null) {
/*  49 */       instance = new CesCilCtl();
/*     */     }
/*  51 */     return instance;
/*     */   }
/*     */ 
/*     */   public String getProductCode(String moduleCode)
/*     */   {
/*  63 */     return getProductLineCode(moduleCode);
/*     */   }
/*     */ 
/*     */   public HashMap<String, Integer> getAllProducts() {
/*  67 */     String[] strProductNames = { "6001", "D001", "D003", "corp", "3004", 
/*  68 */       "4001", "A001", "A028", "90", "9002", "9004", "9006" };
/*  69 */     Set set = new HashSet();
/*  70 */     for (int i = 0; i < strProductNames.length; ++i) {
/*  71 */       set.add(strProductNames[i]);
/*     */     }
/*     */ 
/*  74 */     HashMap retMap = new HashMap();
/*  75 */     for (Iterator iter = this.hm_ModuleToLicCount.keySet().iterator(); iter
/*  76 */       .hasNext(); )
/*     */     {
/*  77 */       String strModule = (String)iter.next();
/*  78 */       if (set.contains(strModule))
/*     */         continue;
/*  80 */       retMap.put(strModule, (Integer)this.hm_ModuleToLicCount.get(strModule));
/*     */     }
/*  82 */     retMap.remove("10");
/*  83 */     return retMap;
/*     */   }
/*     */ 
/*     */   public long getExpireDate() {
/*  87 */     return expireTime;
/*     */   }
/*     */ 
/*     */   public synchronized HashMap<String, Integer> getProductLicenses()
/*     */   {
/*  95 */     if (System.currentTimeMillis() - accessTime > 86400000L) {
/*  96 */       this.hm_ModuleToLicCount.clear();
/*  97 */       init();
/*     */     }
/*  99 */     return this.hm_ModuleToLicCount;
/*     */   }
/*     */ 
/*     */   public String getProductLineCode(String moduleCode)
/*     */   {
/* 112 */     if (getProductLicenses().containsKey("##")) {
/* 113 */       return "##";
/*     */     }
/*     */ 
/* 116 */     if (moduleCode.length() == 2)
/* 117 */       return moduleCode;
/* 118 */     if (moduleCode.startsWith("10"))
/* 119 */       return "10";
/* 120 */     if (specialMap.containsKey(moduleCode.substring(2, 3))) {
/* 121 */       return "10";
/*     */     }
/* 123 */     return checkModuleCodeLevel(moduleCode);
/*     */   }
/*     */ 
/*     */   private String checkModuleCodeLevel(String mc)
/*     */   {
/* 141 */     return checkModuleCode2Level(mc);
/*     */   }
/*     */ 
/*     */   private String checkModuleCode2Level(String mc)
/*     */   {
/* 148 */     if (mc.length() >= 4) {
/* 149 */       mc = mc.substring(0, 4);
/*     */ 
/* 151 */       Integer count = (Integer)this.hm_ModuleToLicCount.get(mc);
/*     */ 
/* 153 */       if ((count != null) && (count.intValue() != 0))
/*     */       {
/* 155 */         if (specialMap.containsKey(mc))
/* 156 */           return mc;
/* 157 */         if (count.intValue() > 1) {
/* 158 */           return mc;
/*     */         }
/* 160 */         return mc.substring(0, 2);
/*     */       }
/* 162 */       if (specialMap.containsKey(mc)) {
/* 163 */         return ((String)specialMap.get(mc));
/*     */       }
/* 165 */       String tmpCode = mc.substring(0, 2);
/* 166 */       if (specialMap.containsKey(tmpCode))
/* 167 */         return ((String)specialMap.get(tmpCode));
/* 168 */       return mc;
/*     */     }
/*     */ 
/* 172 */     return checkModuleCode1Level(mc);
/*     */   }
/*     */ 
/*     */   private String checkModuleCode1Level(String mc)
/*     */   {
/* 183 */     String tmpCode = mc.substring(0, 2);
/* 184 */     if (specialMap.containsKey(tmpCode)) {
/* 185 */       return ((String)specialMap.get(tmpCode));
/*     */     }
/*     */ 
/* 192 */     return tmpCode;
/*     */   }
/*     */ 
/*     */   public boolean isUsedGLBook()
/*     */   {
/* 202 */     Integer value = (Integer)getProductLicenses().get("1099");
/* 203 */     int glBookLicense = 0;
/* 204 */     if (value != null) {
/* 205 */       glBookLicense = value.intValue();
/*     */     } else {
/* 207 */       value = (Integer)getProductLicenses().get("*");
/* 208 */       if (value != null)
/* 209 */         glBookLicense = value.intValue();
/*     */     }
/* 211 */     return (glBookLicense > 0);
/*     */   }
/*     */ 
/*     */   private void init()
/*     */   {
/* 217 */     CuesrityRgm manager = CuesrityRgm.getShareSecurityManager();
/*     */     try {
/* 219 */       expireTime = new Date(2050,12,12).getTime();
/*     */     } catch (Exception e) {
/* 221 */       expireTime = 1L;
/*     */     }
/*     */     try {
/* 224 */       String[] products = manager.getProducts();
/* 225 */       int i = 0; 
				for (int count = (products == null) ? 0 : products.length; i < count; ++i)
/*     */       {
/* 227 */         int licenseCount = 10000;
/*     */ 
/* 230 */        // if ((!(products[i].trim().equals(Hpo.TEMPLICENSE))) && 
/* 231 */        //   (licenseCount > 50000))
/* 232 */        //   licenseCount = -1;
/* 233 */         this.hm_ModuleToLicCount.put(products[i].trim(), 
/* 234 */           new Integer(licenseCount));
/*     */       }
/*     */     } catch (Exception e) {
/* 237 */       e.printStackTrace();
/*     */     }
/*     */ 
/* 240 */     this.hm_ModuleToLicCount.put("10", new Integer(2147483647));
/*     */ 
/* 242 */     new File(CuesrityRgm.getNCHome() + "/bin/A.dll").delete();
/*     */ 
/* 244 */     accessTime = System.currentTimeMillis();
/*     */   }
/*     */ }

 